
package com.gitee.jmash.oidc.oauth2.models;

import java.time.Instant;
import java.time.ZoneId;
import java.util.Locale;
import jakarta.json.bind.annotation.JsonbProperty;
import jakarta.validation.constraints.NotBlank;
import jmash.protobuf.Gender;

/** 账户信息模型. */
public class UserInfoModel {

  /** 账户ID. subject - Identifier for the End-User at the Issuer. */
  @NotBlank
  private String sub;
  /** 登录名. End-User's full name in displayable form including all name parts. */
  private String name;
  /** 昵称. */
  private String nickname;
  /** 真实姓名 realName. */
  @JsonbProperty("preferred_username")
  private String preferredUsername;
  /** 个人信息Url. */
  private String profile;
  /** 头像Url. */
  private String picture;
  /** 个人主页Url. */
  private String website;
  /** Email. */
  private String email;
  /** Email 是否验证. */
  @JsonbProperty("email_verified")
  private boolean emailVerified;
  /** 性别. */
  private Gender gender;
  /** 生日YYYY-MM-dd. */
  private String birthdate;
  /** Asia/Shanghai. */
  private String zoneinfo = ZoneId.systemDefault().toString();
  /** BCP47 [RFC5646] language tag . */
  private String locale = Locale.SIMPLIFIED_CHINESE.toLanguageTag();
  /** 电话号码. */
  @JsonbProperty("phone_number")
  private String phoneNumber;
  /** 电话号码 是否验证. */
  @JsonbProperty("phone_number_verified")
  private String phoneNumberVerified;
  /** 地址. */
  private AddressModel address;
  /** 最后更新时间. */
  @JsonbProperty("updated_at")
  private Instant updatedAt;

  public String getSub() {
    return sub;
  }

  public void setSub(String sub) {
    this.sub = sub;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getNickname() {
    return nickname;
  }

  public void setNickname(String nickname) {
    this.nickname = nickname;
  }

  public String getPreferredUsername() {
    return preferredUsername;
  }

  public void setPreferredUsername(String preferredUsername) {
    this.preferredUsername = preferredUsername;
  }

  public String getProfile() {
    return profile;
  }

  public void setProfile(String profile) {
    this.profile = profile;
  }

  public String getPicture() {
    return picture;
  }

  public void setPicture(String picture) {
    this.picture = picture;
  }

  public String getWebsite() {
    return website;
  }

  public void setWebsite(String website) {
    this.website = website;
  }

  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  public boolean isEmailVerified() {
    return emailVerified;
  }

  public void setEmailVerified(boolean emailVerified) {
    this.emailVerified = emailVerified;
  }

  public Gender getGender() {
    return gender;
  }

  public void setGender(Gender gender) {
    this.gender = gender;
  }

  public String getBirthdate() {
    return birthdate;
  }

  public void setBirthdate(String birthdate) {
    this.birthdate = birthdate;
  }

  public String getZoneinfo() {
    return zoneinfo;
  }

  public void setZoneinfo(String zoneinfo) {
    this.zoneinfo = zoneinfo;
  }

  public String getLocale() {
    return locale;
  }

  public void setLocale(String locale) {
    this.locale = locale;
  }

  public String getPhoneNumber() {
    return phoneNumber;
  }

  public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
  }

  public String getPhoneNumberVerified() {
    return phoneNumberVerified;
  }

  public void setPhoneNumberVerified(String phoneNumberVerified) {
    this.phoneNumberVerified = phoneNumberVerified;
  }

  public AddressModel getAddress() {
    return address;
  }

  public void setAddress(AddressModel address) {
    this.address = address;
  }

  public Instant getUpdatedAt() {
    return updatedAt;
  }

  public void setUpdatedAt(Instant updatedAt) {
    this.updatedAt = updatedAt;
  }

}
